/**
 * 成绩统计 (TypeScript 版本)
 */

// 定义学生类型接口
interface Student1 {
    name: string;
    score: number;

}

// 定义统计结果类型接口
interface GradeStats {
    average: number;
    max: number;
    min: number;
    excellentCount: number;
}

// 计算成绩统计
const calculateGradeStats1 = (students: Student1[]): GradeStats => {
    // 1. 提取所有分数
    const scores: number[] = students.map(({ score }) => score);

    // 2. 计算平均分
    const average: number = scores.reduce((sum, currentScore) => sum + currentScore, 0) / scores.length;

    // 3. 计算最高分
    const max: number = Math.max(...scores);

    // 4. 计算最低分
    const min: number = Math.min(...scores);

    // 5. 计算优秀人数
    const excellentCount: number = students.filter(({ score }) => score >= 90).length;

    // 6. 返回统计结果
    return {
        average: Number(average.toFixed(2)),
        max,
        min,
        excellentCount
    };
};

// 格式化统计报告
const formatStatsReport1 = ({ average, max, min, excellentCount }: GradeStats): string => {
    return `
======== 成绩统计报告 =
平均分: ${average}
最高分: ${max}
最低分: ${min}
优秀人数: ${excellentCount}
=========================//


// ==== 修改后代码 ====
`;
};

// 示例数据
const studentScores1: Student1[] = [
    { name: "Alice", score: 95 },
    { name: "Bob", score: 88 },
    { name: "Charlie", score: 76 },
    { name: "David", score: 92 },
    { name: "Eva", score: 84 }
];

// 计算并输出结果
const stats1: GradeStats = calculateGradeStats1(studentScores1);
console.log(formatStatsReport1(stats1));
